0c842708c0fa1ea64e810dfe599b8ccfc8215626,plugins/org.eclipse.emf.index/src/org/eclipse/emf/index/resource/impl/DefaultEmfResourceChangeListenerImpl.java,DefaultEmfResourceChangeListenerImpl,resourceChanged,#URI#IIndexStore#IndexFeeder#,33

Before Change


					feeder.createEObjectDescriptor(element, getEObjectName(element), getEObjectDisplayName(element),
							getEObjectUserData(element));
					for (EReference eReference : element.eClass().getEAllReferences()) {
						if (isIndexReference(eReference, element)) {
							feeder.createECrossReferenceDescriptor(element, eReference);
						}
					}
				}

After Change


		if (resource != null) {
			feeder.createResourceDescriptor(resource, getResourceUserData(resource));
			for (Iterator<EObject> i = EcoreUtil.getAllProperContents(resource, false); i.hasNext();) {
				EObject element = i.next();
				if (isIndexElement(element)) {
					feeder.createEObjectDescriptor(element, getEObjectName(element), getEObjectDisplayName(element),
							getEObjectUserData(element));
					URI sourceURI = EcoreUtil.getURI(element);
					if (sourceURI != null) {
						for (EReference eReference : element.eClass().getEAllReferences()) {
							String eReferenceName = eReference.getName();
							if (isIndexReference(eReference, element)) {
								if (eReference.isMany()) {
									List<?> targets = (List<?>) ((InternalEObject) element).eGet(eReference, false);
									for (int index = 0; index < targets.size(); ++index) {
										Object target = targets.get(index);
										createECrossReferenceDescriptor(feeder, sourceURI, eReferenceName, index,
												target);
									}
								}
								else {
									Object target = ((InternalEObject) element).eGet(eReference, false);
									createECrossReferenceDescriptor(feeder, sourceURI, eReferenceName,
											ECrossReferenceDescriptor.NO_INDEX, target);
								}
							}
						}